﻿using System;
using System.Windows.Forms;
using App.Controlador.Seguridad;
using App.Modelo;
using App.Modelo.Attributes;

namespace App.Git.Vista
{
    [Formulario("DiagnosticarReparacion")]
    public partial class DiagnosticarReparacion : Form
    {
        public event EventHandler<ReparacionDiagnosticadaEventArg> ReparacionDiagnosticada;

        private Reparacion reparacion;


        public DiagnosticarReparacion()
        {
            Registry.Instance.RegisterForm(this);
            InitializeComponent();
        }

        private DiagnosticoReparacion diagnostico = new DiagnosticoReparacion();
        public DiagnosticoReparacion Diagnostico
        {
            get
            {
                return diagnostico;
            }
            set
            {
                diagnosticoReparacionBindingSource.DataSource = diagnostico = value;
            }
        }



        public Reparacion Reparacion
        {
            get { return reparacion; }
            set
            {
                reparacionBindingSource.DataSource = reparacion = value;
                if (null != value && null != value.Diagnostico )
                {
                    datosEquipo1.Equipo = value.Equipo;
                    Diagnostico = value.Diagnostico;
                }
                else
                {
                    
                }
            }
        }


        [Comando("alta")]
        public void alta()
        {
            Show();
        }


        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            TimeSpan hora;

            if (!TimeSpan.TryParse(maskedTextBox1.Text, out hora))
            {
                MessageBox.Show("La hora ingresada no es válida");
                maskedTextBox1.Focus();
            }
            diagnostico.Horas = hora;
            try
            {
                Registry.Instance.Controlador.Reparaciones.DiagnosticarReparacion(
                    reparacion, diagnostico
                );

                Hide();

                MessageBox.Show("Se diagnostico la reparación");

                if (ReparacionDiagnosticada != null)
                    ReparacionDiagnosticada(this, new ReparacionDiagnosticadaEventArg() { Reparacion = reparacion });
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

        private void tabPage2_Enter(object sender, EventArgs e)
        {
            reparacionBindingSource1.DataSource = Registry.Instance.Controlador.Reparaciones.ListHistorico(Reparacion);
        }

        private void reparacionBindingSource1_DataError(object sender, BindingManagerDataErrorEventArgs e)
        {

        }

        private void dataGridView3_DataError(object sender, DataGridViewDataErrorEventArgs e)
        {

        }

    }

    public class ReparacionDiagnosticadaEventArg : EventArgs
    {
        public Reparacion Reparacion { get; set; }
    }
}
